/*
 * Inserta comentarios Javadoc en la clase CCuenta.
 * 
 */

package dam_ed04_actividad;

/**
 *
 * @author Carlos J. Gil Mauri
 */
public class CCuenta {
    /**
     * Declaración variable tipo string, nombre del usuario de la cuenta
     */
    public String nombre;
    /**
     * Declaración variable tipo string, número de la cuenta
     */
    public String cuenta;
    /**
     * Declaración variable tipo double, el saldo de la cuenta
     */
    public double saldo;
    /**
     * Declaración variable tipo double, el tipo de interes o rédito de la cuenta
     */
    public double tipoInterés;

    /**
     * constructor vacio
     */
    public CCuenta()
    {
    }
    
    /**
     * Constructor que recibe 4 parámetros
     * @param nom para inicializar la variable nombre
     * @param cue para inicializar la variable cuenta
     * @param sal para inicializar la variable saldo
     * @param tipo para inicializar la variable tipoInterés
     */
    public CCuenta(String nom, String cue, double sal, double tipo)
    {
        nombre =nom;
        cuenta=cue;
        saldo=sal;
    }
    
    /**
     * método que llama a otro metodo setter y le asigna la variable nombre del otro método
     * @param nom para inicializar la variable nombre
     */
    public void asignarNombre(String nom)
    {
        setNombre(nom);
    }

    /**
     * método que llama a otro metodo getter y le asigna la variable nombre del otro método
     * @return devuelve el valor de la variable nombre
     */
    public String obtenerNombre()
    {
        return getNombre();
    }

    /**
     * método que llama a otro metodo getter y le asigna la variable saldo del otro método
     * @return devuelve el valor de la variable saldo
     */
    public double estado()
    {
        return getSaldo();
    }

    /**
     * metodo que comprueba si la cantidad es mayor que cero
     * para añadir a la variable saldo
     * @param cantidad variable a añadir a saldo
     * @exception Exception excepcion que devuelve si no cumple la condicion
     */
    public void ingresar(double cantidad) throws Exception
    {
        if (cantidad<0)
            throw new Exception("No se puede ingresar una cantidad negativa");
        setSaldo(getSaldo() + cantidad);
    }
    
    /**
     * método para retirar que comprueba si la cantidad es mayor que cero y si hay suficiente saldo
     * para restar a la variable saldo
     * @param cantidad variable para restar a saldo
     * @exception Exception dos excepciones si no se cumple las condiciones
     */
    public void retirar(double cantidad) throws Exception
    {
        if (cantidad <= 0)
            throw new Exception ("No se puede retirar una cantidad negativa");
        if (estado()< cantidad)
            throw new Exception ("No se hay suficiente saldo");
        setSaldo(getSaldo() - cantidad);
    }

    /**
     * método que llama a otro metodo getter y le asigna la variable cuenta del otro método
     * @return devuelve el valor de la variable cuenta
     */
    public String obtenerCuenta()
    {
        return getCuenta();
    }

    /**
     * método que llama a otro metodo getter y le asigna la variable nombre del otro método
     * @return devuelve el valor de la variable nombre
     */
    public String getNombre() {
        return nombre;
    }

    /**
     * método setter que asigna la variable nombre el string pasado como parámetro
     * @param nombre devuelve el valor de la variable nombre
     */
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    /**
     * método getter que asigna la variable tipoInteres
     * @return tipoInterés devuelve el valor de la variable tipoInterés
     */
    public double getTipoInterés() {
        return tipoInterés;
    }

    /**
     * método setter que asigna la variable tipoInterés de la cuenta
     * @param tipoInterés devuelve el valor de la variable tipoInterés
     */
    public void setTipoInterés(double tipoInterés) {
        this.tipoInterés = tipoInterés;
    }

    /**
     * metodo getter que asigna la variable cuenta
     * @return the cuenta
     */
    public String getCuenta() {
        return cuenta;
    }

    /**
     * metodo setter que asigna la variable cuenta el string pasado como parámetro
     * @param cuenta the cuenta to set
     */
    public void setCuenta(String cuenta) {
        this.cuenta = cuenta;
    }

    /**
     * metodo getter que asigna la variable saldo
     * @return the saldo
     */
    public double getSaldo() {
        return saldo;
    }

    /**
     * metodo setter que asigna la variable saldo de tipo double pasado como parámetro
     * @param saldo the saldo to set
     */
    public void setSaldo(double saldo) {
        this.saldo = saldo;
    }
}
